/*
 * 原版接口
 */
import * as server from "@minecraft/server";
/*
 * 彼岸组件
 */
import * as effect_machine from "./effect_machine";
/**
 * * 定义实体踩踏方块组件的参数接口
 */
interface STEP_COMPONENT {
    /**
     * * 方块对象
     */
    block: server.Block;
    /**
     * * 方块状态
     */
    state: server.BlockPermutation;
    /**
     * * 方块维度
     */
    dimension: server.Dimension;
    /**
     * * 实体对象
     */
    entity: server.Entity | undefined;
};
/**
 * * 实体踩踏方块组件
 * 
 * @param source - 方块组件参数
 */
function StepComponentTrigger(source: server.BlockComponentStepOnEvent): STEP_COMPONENT {
    /**
     * * 方块对象
     */
    const block = source.block;
    /**
     * * 方块状态
     */
    const state = source.block.permutation;
    /**
     * * 方块维度
     */
    const dimension = source.dimension;
    /**
     * * 实体对象
     */
    const entity = source.entity;
    // 返回 实体踩踏方块 的 组件参数 的 解构
    return { block, state, dimension, entity };
};
/**
 ** 区块显示 - 实体踩踏
 */
export function RegionDisplayTrigger(): server.BlockCustomComponent {
    return {
        onStepOn(source: server.BlockComponentStepOnEvent) {
            /**
             * * 方块破坏组件参数解构
             */
            const analysis = StepComponentTrigger(source);
            // 执行 组件功能
            effect_machine.Flame(analysis.block);
        }
    }
};
/**
 ** 区块显示 - 实体踩踏
 */
export function VectorEjectionTrigger(): server.BlockCustomComponent {
    return {
        onStepOn(source: server.BlockComponentStepOnEvent) {
            /**
             * * 方块破坏组件参数解构
             */
            const analysis = StepComponentTrigger(source);
            // 执行 组件功能
            effect_machine.Vector(analysis.block);
        }
    }
};